课程主页:https://deepgenerativemodels.github.io/

课件资料:https://github.com/Subhajit135/CS236_DGM,https://github.com/deepgenerativemodels/notes

视频地址:https://www.bilibili.com/video/av81625948?from=search&seid=4636291486683332935

这里回顾CS236 Lecture 3的课程内容,这一讲介绍了自回归模型。

Autoregressive Models

例子:MNIST

考虑MNIST数据集$\mathcal D$:

每个图片有$n=28 \times 28 =784$个像素,每个像素为$0$或$1$。我们希望学习一个概率分布$p(v)=p\left(v_{1}, \cdots, v_{784}\right)$,其中$v \in\{0,1\}^{784}$;该概率分布应该有如下效果:如果$v \sim p(v)$,那么$v$看起来像数字。具体思路是定义模型族$\left\{p_{\theta}(v), \theta \in \Theta\right\}$,然后根据训练集$\mathcal D$学习参数$\theta$,后续会讨论几个具体的想法。

Fully Visible Sigmoid Belief Network

我们可以按照一个次序顺序产生图片,例如$1, 2,\ldots, 784$的顺序,利用链式分解得到:

现在我们假设

其中

更一般的,我们有

即每个像素服从伯努利分布,其中参数值和之前的像素值有关。

在上述假设下,需要的参数数量为

整个模型的图示如下:

这种模型的效果如下:

NADE: Neural Autoregressive Density Estimation

该模型是利用神经网络对之前模型进行了改进:

更具体的:

为了减少参数的数量,可以使用权重共享的方法:

假设$W \in \mathbb{R}^{H \times n}$,那么权重的数量为$O(nH)$。

这种模型的效果如下:

一般的离散分布

对于一般的离散分布,需要使用softmax函数

RNADE

之前讨论的是输出为离散的情形,那么对连续随机变量$V_{i} \in \mathbb{R}$,应该如何建模呢?课程中介绍了高斯混合模型:

上述介绍的模型都是autoregressive模型,因为后一时刻的值都和之前时刻的值相关。

Autoencoders

Autoencoder分为encoder $e(.)$和decoder $d(.)$,其中效果为$d(e(x)) \approx x$。一般的autoencoder不是生成模型,因为并没有定义概率分布。那么该如何从autoencoder构造一个生成模型呢?

MADE: Masked Autoregressive density estimator

如果我们使autoencoder变成autoregressive模型,那么自然可以变成生成模型;而autoregressive模型最重要的是顺序,Masked Autoregressive density estimator即做到了这点:

以上图为例,序号为$i$的单元只依赖于上一层序号小于等于$i$的单元。